package com.example.demo.consumer;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.example.demo.Utils.MinioUtils;
import com.example.demo.entity.AIAlarmMessage;
import com.example.demo.mapper.AIAlarmMessageMapper;
import lombok.var;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.apache.tomcat.util.http.fileupload.FileItem;
import org.apache.tomcat.util.http.fileupload.disk.DiskFileItem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.UnknownHostException;
import java.nio.file.Files;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * @Author: lu
 * @Date: 2024-11-19-9:53
 * @Description:
 */
//@Component
//@RocketMQMessageListener(consumerGroup = "producer-group", topic = "AI_ALARM_VIDEO_TOPIC",nameServer = "10.105.50.223:9876")
//
//public class MessageListener implements RocketMQListener<String> {
//
//    @Autowired
//    AIAlarmMessageMapper aiAlarmMessageMapper;
//
//    @Autowired
//    MinioUtils minioUtils;
//
//    @Override
//    public void onMessage(String message) {
//        // 处理接收到的消息
//        System.out.println("Received message: " + message);
//        String s = message.toString();
//        JSONObject jsonObject = JSON.parseObject(s);
//        String msgTitle = jsonObject.getJSONObject("messagetReminder").getString("msgTitle");
//        String type = jsonObject.getJSONObject("messagetReminder").getString("type");
//        String msgContent = jsonObject.getJSONObject("messagetReminder").getString("msgContent");
//        System.out.println(msgTitle);
//
//
//        List<String> list = new ArrayList<>();
//        //遍历拿到报警图片和报警时间
//        JSONArray alarmPicture = jsonObject.getJSONObject("messagetReminder").getJSONArray("alarmPicture");
//        Date date = null;
//        for(int i= 0;i <alarmPicture.size(); i++){
//            JSONObject pictureJSONObject = alarmPicture.getJSONObject(i);
//            String alarmPicturePath = pictureJSONObject.getString("alarmPicturePath");
//            String alarmPictureTime = pictureJSONObject.getString("alarmPictureTime");
//            //list.add(alarmPicturePath);
//
//            String destinationFolder = "E:\\AIAlarmMessage\\images"; // 本地文件夹路径
//
//            String s1= null;
//            try {
//                // 创建文件夹（如果不存在）
//                File folder = new File(destinationFolder);
//                if (!folder.exists()) folder.mkdirs();
//
//                // 下载图片
//                String fileName = getFileNameFromURL(alarmPicturePath);
//                downloadImage(alarmPicturePath, new File(folder, fileName));
//                System.out.println("图片下载成功，保存到: " + folder + File.separator + fileName);
//                s1 = folder + File.separator + fileName;
//
//
//            } catch (IOException e) {
//                System.err.println("下载失败: " + e.getMessage());
//            }
//
//
//
//            //获取上传文件的路径，并更新检查记录details表中的附件路径
//            MultipartFile multipartFile = convertFileToMultipartFile(s1);
//            try {
//                String file = minioUtils.putObject("datalake", "datalake/image/AIAlarmImage", multipartFile);
//                int startIndex3 = file.indexOf("datalake");
//                String path = null;
//                if (startIndex3 != -1) {
//                    path = file.substring(startIndex3);
//                }
//
//                //List<String> list1 = new ArrayList<>();
//                list.add(path);
//
//                System.out.println(path);
//            } catch (UnknownHostException e) {
//                e.printStackTrace();
//            }
//
//            // 定义输入和输出的日期格式
//            SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
//            SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//
//            // 设置时区（可选，根据需要设置）
//            outputFormat.setTimeZone(TimeZone.getDefault()); // 设置为系统默认时区
//
//            try {
//                // 解析输入字符串为 Date
//                date = inputFormat.parse(alarmPictureTime);
//
//                // 格式化为所需的字符串格式（可选）
//                //String formattedDateTime = outputFormat.format(date);
//
//                // 输出 Date 对象和格式化后的字符串
//                //System.out.println("Date对象: " + date);
//                //System.out.println("格式化后的日期时间: " + formattedDateTime);
//            } catch (ParseException e) {
//                e.printStackTrace();
//            }
//
//            System.out.println(alarmPicturePath);
//            System.out.println(alarmPictureTime);
//        }
//        //将报警数据插入表中
//        AIAlarmMessage aiAlarmMessage = new AIAlarmMessage();
//        aiAlarmMessage.setMsgTitle(msgTitle);
//        aiAlarmMessage.setType(type);
//        aiAlarmMessage.setMsgContent(msgContent);
//        aiAlarmMessage.setAlarmPicture(list);
//        aiAlarmMessage.setAlarmTime(date);
//        aiAlarmMessageMapper.insert(aiAlarmMessage);
//
//    }
//
//    private static void downloadImage(String imageUrl, File destinationFile) throws IOException {
//        HttpURLConnection connection = (HttpURLConnection) new URL(imageUrl).openConnection();
//        connection.setRequestMethod("GET");
//
//        if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
//            try (InputStream in = new BufferedInputStream(connection.getInputStream());
//                 FileOutputStream out = new FileOutputStream(destinationFile)) {
//                byte[] buffer = new byte[1024];
//                int bytesRead;
//                while ((bytesRead = in.read(buffer)) != -1) {
//                    out.write(buffer, 0, bytesRead);
//                }
//            }
//        } else {
//            System.err.println("HTTP 响应码: " + connection.getResponseCode());
//        }
//        connection.disconnect();
//    }
//
//    private static String getFileNameFromURL(String url) {
//        return url.substring(url.lastIndexOf('/') + 1); // 提取文件名
//    }
//
//    //处理上传文件，将本地文件转换为MultipartFile
//    public MultipartFile convertFileToMultipartFile(String filePath) {
//        File file = new File(filePath);
//        MultipartFile multipartFile = null;
//
//        try (FileInputStream input = new FileInputStream(file)) {
//            // 获取文件的内容类型
//            String contentType = Files.probeContentType(file.toPath());
//            // 如果无法确定内容类型，可以设置一个默认值
//            if (contentType == null) {
//                contentType = "application/octet-stream"; // 默认内容类型
//            }
//            multipartFile = new MockMultipartFile(file.getName(), file.getName(), contentType, input);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return multipartFile;
//    }
//
//}
